package com.tao.YanMoDesignPattern.template.callBack;

import com.tao.YanMoDesignPattern.template.case1_extend.LoginModel;

/**
 * @Author Mi_Tao
 * @Date 2023/7/22
 * @Description 不再是抽象的了
 * @Version 1.0
 **/
public class LoginTemplate {

    public final boolean login(LoginModel lm,LoginCallback loginCallback){
        // 1 根据登陆人员去获取相应数据
        LoginModel dbLm = loginCallback.findLoginUser(lm.getLoginId());
        if (dbLm != null){
            String encryptPwd = loginCallback.encryptPwd(dbLm.getPwd(), this);
            // 把加密后的密码设置回到登陆数据模型中
            lm.setPwd(encryptPwd);
            // 判断是否匹配
            return loginCallback.match(lm,dbLm,this);
        }
        return false;
    }

    public boolean match(LoginModel lm, LoginModel dbLm) {
        if (lm.getLoginId().equals(dbLm.getLoginId()) && lm.getPwd().equals(dbLm.getPwd())){
            return true;
        }
        return false;
    }

    /**
     * 加密pwd
     *
     * @param pwd
     * @return 加密后的密码数据
     */
    public String encryptPwd(String pwd) {
        return pwd;
    }
}
